<template>
  <div>
    <!-- 面包屑导航 -->
    <el-breadcrumb separator-class="el-icon-arrow-right">
      <el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
      <el-breadcrumb-item>数据统计</el-breadcrumb-item>
      <el-breadcrumb-item>数据报表</el-breadcrumb-item>
    </el-breadcrumb>

    <!-- 卡片布局区域 -->
    <el-card class="box-card">
      <!-- 为ECharts准备一个具备大小（宽高）的Dom -->
      <div id="main" style="width: 800px;height:400px;"></div>
    </el-card>
  </div>
</template>

<script>
// 1. 导入 echarts
import echarts from 'echarts'
import _ from 'lodash'

export default {
  name: 'Reports',
  data() {
    return {
      option: {
        title: {
          text: 'ECharts 入门示例'
        },
        tooltip: {},
        legend: {
          data: ['销量']
        },
        xAxis: {
          data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
        },
        yAxis: {},
        series: [
          {
            name: '销量',
            type: 'bar',
            data: [5, 20, 36, 10, 10, 20]
          }
        ]
      }
    }
  },
  async mounted() {
    // 3. 获取准备好的 dom ，初始化 echarts 实例
    var myChart = echarts.init(document.getElementById('main'))

    const { data: res } = await this.$http.get('/reports/type/1')
    if (res.meta.status !== 200) return this.$http.error(res.meta.msg)

    // 4. 指定图表的配置项和数据
    // 不能使用 展开运算符进行合并，因为，数据是多维的
    // var option = { ...res.data, ...this.option }

    // 不能直接把返回的结果赋值给 this.option
    // 因为this.option 包含一些最基本的复制
    // 我们需要的是将返回的配置，与 this.option 拼接，合并成一个新的对象
    // 为了简化操作，我们使用了 Lodash 给提供一个合并对象的方法， merge
    // 这个方法就能够将两个对象合并成一个
    var option = _.merge(res.data, this.option)

    // 5. 使用刚指定图表的配置项和数据显示图表
    myChart.setOption(option)
  }
}
</script>

<style lang="less" scoped></style>
